import { clsx, type ClassValue } from "clsx"
import { twMerge } from "tailwind-merge"

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs))
}

/**
 * 清理和标准化Markdown内容，确保兼容各种格式
 * @param content 原始内容
 * @returns 清理后的Markdown内容
 */
export function cleanMarkdownContent(content: string): string {
  if (!content || typeof content !== 'string') {
    return '';
  }

  let cleaned = content.trim();

  // 检测是否整个内容被单一的 ```markdown 代码块包装
  const markdownBlockRegex = /^```markdown\s*\n([\s\S]*?)\n```$/;
  const markdownMatch = cleaned.match(markdownBlockRegex);
  
  if (markdownMatch) {
    // 如果整个内容被 ```markdown 包装，提取内部内容
    cleaned = markdownMatch[1].trim();
  } else {
    // 检测是否被普通的 ``` 代码块包装（但内容看起来像Markdown）
    const codeBlockRegex = /^```\s*\n([\s\S]*?)\n```$/;
    const codeMatch = cleaned.match(codeBlockRegex);
    
    if (codeMatch) {
      const innerContent = codeMatch[1].trim();
      // 检查内部内容是否包含Markdown标记（标题、列表等）
      const hasMarkdownSyntax = /^#{1,6}\s|^[-*+]\s|^\d+\.\s|^>\s/m.test(innerContent);
      
      if (hasMarkdownSyntax) {
        // 如果内部内容包含Markdown语法，则移除外层代码块
        cleaned = innerContent;
      }
    }
  }

  // 清理多余的空白行（保留必要的换行）
  cleaned = cleaned.replace(/\n{3,}/g, '\n\n');
  
  // 确保内容以换行符结尾（如果不为空）
  if (cleaned && !cleaned.endsWith('\n')) {
    cleaned += '\n';
  }

  return cleaned;
}
